#include <iostream>
#include <functional>
#include <string>
#include <vector>


// 下面代码就相当于把数组当成了线程池, 遍历每个数组就相当于从线程池中取出一个线程

void Print(const std::string& str){
    std::cout << str << std::endl;
}

// 注意: 这里每个bind的类型都是 std::function<void()>
int main()
{
    std::vector<std::function<void()>> task_pool;

    task_pool.emplace_back(std::bind(Print, "Hello"));
    task_pool.emplace_back(std::bind(Print, "World"));
    task_pool.emplace_back(std::bind(Print, "I Miss You (Island1314)"));

    for(auto &functor: task_pool){
        // 这里的调用就相当于从线程池中取出一个线程, 然后执行
        functor();
    }
    return 0;
}